Numerous methods have been proposed for achieving the efficient transfer of data retrieval commands and data packages issued in response to those commands, between a requesting device and a memory resource. One such method of increasing the efficiency of command and data package traffic involves establishing a communication protocol between the requesting device and the memory resource in which data packages are returned to the requesting device in the same order which respective data retrieval commands were issued from the requesting device. This allows for efficient streaming of data retrieval commands and data packages as the commands and data packages are identified by their respective locations in the command and data package streams. Accordingly, the requesting device is able to identify which data package was retrieved in response to which command from the order in which the data package is received at the requesting device. A higher degree of communication efficiency is achieved in that identifiers (e.g. memory location addresses) do not have to be associated with each data package so as to allow the requesting device to identify the data packages.
However, in order to increase the rate at which data is retrieved from a memory resource, for example an Extended Data Out (EDO) Random Access Memory (RAM), it may be desirable to re-order data retrieval commands included within a command stream. Specifically, when non-sequential commands address proximate locations in a memory resource, such as locations within a common page of a main memory, it is desirable to re-order such non-sequential commands so that they are received sequentially at the memory resource. By re-ordering the command stream, the overall access time to the memory resource may be reduced as, merely for example, the number of Row Address Strobe (RAS#) assertions and de-assertions and the associated pre-charging of circuitry within the memory source, are reduced.
When the re-ordering of commands occurs, it will be appreciated that the data packages retrieved in response to these commands may have to be re-ordered, prior to propagation to the requesting device, according to the original command order. This re-ordering may occur utilizing a data buffer. It is desirable to reduce the amount of die space dedicated to this buffer within an integrated circuit, and also to reduce the potential for thermal problems in the integrated circuit due to a large data buffer.